Xiuno BBS 开发实践教程 - 主题 - The Hard Way 后记
# 《Xiuno BBS 开发实践教程 - 主题 - The Hard Way》后记
本文介绍了《Xiuno BBS 开发实践教程 - 主题 - The Hard Way》中我忘记提到的一些内容。适合插件开发者阅读。
依旧,
## Hook的顺序
由于xiuno bbs根本没有“小工具 Widget”的概念,所以在主页、板块、帖子页面的右侧的你认为的“小工具区域”实际上都是HTML。
- 主页只是预先定义了网站简介
- 板块页面预先定义了板块图标、简介、公告、版主列表
- 帖子页面预先定义了帖子作者信息
然后留出了Hook点,让插件开发者可以在Hook点插入自己的HTML。
我也知道这个设计是不高效且有问题的(用户无法自定义顺序),但是我也不知道怎么改,因为很多插件都已经适应了这个设计。
所以我就把Hook点的顺序写在这里,希望能帮到插件开发者。
- 主页 `index.htm`:
- 发新帖按钮
- hook `index_site_brief_before.htm`
- 网站简介“小工具”
- hook `index_site_brief_start.htm`
- 网站名称
- 网站描述
- 网站统计
- hook `index_site_brief_end.htm`
- hook `index_site_brief_after.htm`
- 板块页面 `forum.htm`:
- 发新帖按钮
- 板块信息“小工具”
- 板块图标
- 板块名称
- hook `forum_brief_before.htm`
- 板块简介
- hook `forum_brief_after.htm`
- 注意!有些版本写了两遍`forum_brief_before.htm`
- 板块统计
- 在板块统计的最后一项之后有一个 hook `forum_todaythreads_after.htm`
- hook `forum_mod_before.htm`
- 公告与版主列表“小工具”
- 公告
- 版主列表
- hook `forum_mod_after.htm`
- 帖子页面 `thread.htm`:
- 发新帖按钮
- 发帖用户信息“小工具”
- 发帖用户头像
- 发帖用户名称
- hook `thread_user_username_after.htm`
- 发帖用户统计
- 发帖数量
- hook `thread_user_threads_after.htm`
- 回帖数量
- hook `thread_user_posts_after.htm`
- UID
- hook `thread_user_uid_after.htm`
- hook `thread_user_after.htm`
### 如何调整Hook点的顺序
你的插件里的小工具不一定会在你认为的地方出现,但你可以通过调整Hook点的顺序来调整你的小工具的位置。你虽然干涉不了别人怎么做,但至少你可以干涉自己的。
我在《Xiuno BBS 开发实践教程 - 1 - 单页》中介绍了如何调整Hook点的顺序。但再说一次也无妨。
当你发现你的hook没有出现在你希望的位置(如主页右侧小工具区域`index_site_brief_after.htm`,你的插件可能会排在其他插件之后出现,而你想要提前出现),请这样写:
```json
"hooks_rank":{
"index_site_brief_after.htm": -10
},
```
1. 将hooks_rank的方括号换成花括号
2. 键是对应hook文件名
3. 值是提升或降低的幅度
- 负数是提前,正数是延后
- 应当以10为单位调整,但不是所有的插件都会遵守,所以能看到某些插件会设置成`-9999`,那这样的话你只能设置成更大的值了。
4. 这样的键值对可以有多个
而遗憾的是,因为你虽然干涉不了别人怎么做,但至少你可以干涉自己的,所以这个rank会慢慢膨胀。据我所知已经有人设置到-9999了。
## Overwrite的顺序
有的时候,某些插件会覆盖掉你的主题里的文件。
例如“新发帖新回复”插件,因为要在主页筛选区域里增加一个“新帖”的筛选条件,但因为某种未知原因,会覆盖掉主题里的`view/htm/index.htm`。
### 如何调整Overwrite的顺序
我在《Xiuno BBS 开发实践教程 - 1 - 单页》中也介绍了如何调整Overwrite的顺序。但再说一次也无妨。
当你发现你希望要覆盖的文件没能成功覆盖时(如主题的导航菜单`header_nav.inc.htm`),请这样写:
```json
"overwrites_rank":{
"view/htm/header_nav.inc.htm": -10
},
```
1. 将overwrites_rank的方括号换成花括号
2. 键是对应文件名(从你的插件文件夹里的overwrite文件夹开始的相对路径)
- 如`plugin/my_menu_custom/overwrite/view/htm/header_nav.inc.htm`,则为`view/htm/header_nav.inc.htm`
3. 值是提升或降低的幅度
- 负数是提前,正数是延后
- 应当以10为单位调整,但不是所有的插件都会遵守,所以能看到某些插件会设置成`-9999`,那这样的话你只能设置成更大的值了。
4. 这样的键值对可以有多个
## 如何在主题里增加自己的页面
因为xiuno bbs也没有类似wordpress里的页面概念,所以你只能自己写页面。
请参考《Xiuno BBS 开发实践教程 - 1 - 单页》。全文就在介绍怎么做。